//
// "$Id: Fl_Timer.H 8864 2011-07-19 04:49:30Z greg.ercolano $"
//
// Timer header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2010 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file.  If this
// file is missing or damaged, see the license at:
//
//     http://www.fltk.org/COPYING.php
//
// Please report all bugs and problems on the following page:
//
//     http://www.fltk.org/str.php
//

/* \file
   Fl_Timer widget . */

#ifndef Fl_Timer_H
#define Fl_Timer_H

#ifndef Fl_Widget_H
#include "Fl_Widget.H"
#endif

// values for type():
#define FL_NORMAL_TIMER		0
#define FL_VALUE_TIMER		1
#define FL_HIDDEN_TIMER		2

/**
  This is provided only to emulate the Forms Timer widget.  It works by
  making a timeout callback every 1/5 second.  This is wasteful and
  inaccurate if you just want something to happen a fixed time in the
  future.  You should directly call
  Fl::add_timeout() instead.
*/
class FL_EXPORT Fl_Timer : public Fl_Widget
{
	static void stepcb(void *);
	void step();
	char on, direction_;
	double delay, total;
	long lastsec,lastusec;
protected:
	void draw();
public:
	int handle(int);
	Fl_Timer(uchar t,int x,int y,int w,int h, const char *l);
	~Fl_Timer();
	void value(double);
	/** See void Fl_Timer::value(double)  */
	double value() const {
		return delay>0.0?delay:0.0;
	}
	/**
	  Gets or sets the direction of the timer.  If the direction is zero
	  then the timer will count up, otherwise it will count down from the
	  initial value().
	*/
	char direction() const {
		return direction_;
	}
	/**
	  Gets or sets the direction of the timer.  If the direction is zero
	  then the timer will count up, otherwise it will count down from the
	  initial value().
	*/
	void direction(char d) {
		direction_ = d;
	}
	/**    Gets or sets whether the timer is suspended.  */
	char suspended() const {
		return !on;
	}
	void suspended(char d);
};

#endif

//
// End of "$Id: Fl_Timer.H 8864 2011-07-19 04:49:30Z greg.ercolano $".
//

